/*
 * 
 * 
 * 
 */
package com.cms.controller.admin;

import java.util.HashMap;
import java.util.List;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;

import com.cms.Feedback;
import com.cms.entity.Config;
import com.cms.routes.RouteMapping;
import com.cms.util.TemplateUtils;
import com.jfinal.plugin.ehcache.CacheKit;


/**
 * Controller - 配置
 * 
 * 
 * 
 */
@RouteMapping(url = "/admin/config")

public class ConfigController extends BaseController {
    
    /**
     * 检查名称是否存在
     */
    public void checkName() {
        String name = getPara("name");
        if (StringUtils.isEmpty(name)) {
            renderJson(false);
        }
        renderJson(!new Config().dao().nameExists(name,getCurrentSite().getId()));
    }
	
	/**
	 * 添加
	 */
	public void add() {
		render(getView("config/add"));
	}
	
	/**
	 * 保存
	 */
	public void save(){
		Config config = getModel(Config.class,"",true); 
		String type = config.getType();
		String value = getPara(type+"Value");
		config.setValue(value);
		config.setIsSystem(false);
		config.setSiteId(getCurrentSite().getId());
		config.save();
		CacheKit.remove(Config.CACHE_NAME, Config.CACHE_NAME+getCurrentSite().getId());
		redirect("/admin/config/list");
	}
	
	/**
	 * 列表
	 */
	public void list(){
		List<Config> systemConfigs = new Config().dao().findList(true,getCurrentSite().getId());
		for(Config config : systemConfigs){
		    setAttr(config.getName(), config.getValue());
		}
		List<Config> settingConfigs = new Config().dao().findList(false,getCurrentSite().getId());
		setAttr("settings", settingConfigs);
		setAttr("templates", TemplateUtils.getTemplates());
		render(getView("config/list"));
	}
	
   /**
     * 更新列表
     */
    public void updateList(){
        List<Config> configs = new Config().dao().findList(null,getCurrentSite().getId());
        for(Config config : configs){
            String value = getPara(config.getName());
            if(!(config.getValue().equals(value))){
                config.setValue(value);
                config.update();
                CacheKit.remove(Config.CACHE_NAME, DigestUtils.md5Hex(config.getName()+getCurrentSite().getId()));
            }
        }
        CacheKit.remove(Config.CACHE_NAME, Config.CACHE_NAME+getCurrentSite().getId());
        redirect("/admin/config/list");
    }
	
   /**
     * 编辑
     */
    public void edit() {
        Long id = getParaToLong("id");
        setAttr("config", new Config().dao().findById(id));
        render(getView("config/edit"));
    }
	
	/**
	 * 更新
	 */
	public void update(){
	    Config config = getModel(Config.class,"",true); 
	    String type = config.getType();
        String value = getPara(type+"Value");
        config.setValue(value);
		config.update();
		CacheKit.remove(Config.CACHE_NAME, DigestUtils.md5Hex(config.getName()+getCurrentSite().getId()));
		redirect("/admin/config/list");
	}
	
   /**
     * 删除
     */
    public void delete() {
        Long id = getParaToLong("id");
        new Config().dao().deleteById(id);
        renderJson(Feedback.success(new HashMap<>()));
    }
}
